代码来自:陈硕muduo库
#include <stdio.h>
#include <algorithm>
#include <stdint.h>
const char digits[] = "9876543210123456789";
const char* zero = digits + 9;
const char digitsHex[] = "0123456789ABCDEF";
// Efficient Integer to String Conversions, by Matthew Wilson.
template<typename T>
size_t convert(char buf[], T value)
{
T i = value;
char* p = buf;
do
{
int lsd = static_cast<int>(i % 10);
i /= 10;
*p++ = zero[lsd];
} while (i != 0);
if (value < 0)
{
*p++ = '-';
}
*p = '\0';
std::reverse(buf, p);
return p - buf;
}
size_t convertHex(char buf[], uintptr_t value)
{
uintptr_t i = value;
char* p = buf;
do
{
int lsd = static_cast<int>(i % 16);
i /= 16;
*p++ = digitsHex[lsd];
} while (i != 0);
*p = '\0';
std::reverse(buf, p);
return p - buf;
}
int main()
{
char buf[32];
convert<int>(buf,32001);
printf("%s\n",buf);
int i = 10;
uintptr_t p = reinterpret_cast<uintptr_t>(&i);
convertHex(buf,p);
printf("%p\n",&i);
printf("%s\n",buf);
}